package com.proffline.tareas;

import com.proffline.bean.BancoPromesa;
import com.proffline.bean.BloqueoEntrega;
import com.proffline.bean.ClaseMaterial;
import com.proffline.bean.Condicion1;
import com.proffline.bean.Condicion2;
import com.proffline.bean.CondicionPago;
import com.proffline.bean.CondicionPagoDetalle;
import com.proffline.bean.Dispositivo;
import com.proffline.bean.Feriado;
import com.proffline.bean.FormaPago;
import com.proffline.bean.Jerarquia;
import com.proffline.bean.Material;
import com.proffline.bean.MaterialStock;
import com.proffline.bean.Rol;
import com.proffline.bean.Tipologia;
import com.proffline.bean.Usuario;
import com.proffline.bean.UsuarioRol;
import com.proffline.bean.Vista;
import com.proffline.bean.VistaRol;
import com.proffline.sap.RFC;
import com.proffline.sqlite.DAO;
import com.proffline.utilidades.Util;
import java.util.ArrayList;
import java.util.List;

public class Sincronizador {

//    public static void sincronizarTablaAgenda() {
//        boolean ocurrioError = false;
//        List<String> listaIdUsuarios = DAO.obtenerListaIdUsuarios();
//        String strFechaFin = Util.convierteFechaHoyAFormatoYYYYMMDD(new Date());
//        List<Agenda> listaAgendaGeneral = new ArrayList<Agenda>();
//        for (String idUsuario : listaIdUsuarios) {
//            List<Agenda> listaAgenda = new ArrayList<Agenda>();
//            try {
//                listaAgenda = RFC.obtenerListaAgenda(idUsuario, strFechaFin);
//            } catch (Exception e) {
//                Util.escribirErrorAArchivoLog(Util.getStackTrace(e));
//                ocurrioError = true;
//            } finally {
//                if (!ocurrioError) {
//                    listaAgendaGeneral.addAll(listaAgenda);
//                }
//            }
//        }
//        DAO.insertarListaAgenda(listaAgendaGeneral);
//    }
    public static void sincronizarTablaBloqueoEntrega() {
        boolean ocurrioError = false;
        List<BloqueoEntrega> listaBloqueoEntrega = new ArrayList<BloqueoEntrega>();
        try {
            listaBloqueoEntrega = RFC.obtenerListaBloqueoEntrega();
        } catch (NoClassDefFoundError e) {
            Util.escribirErrorAArchivoLog(Util.getStackTrace(e));
            ocurrioError = true;
        } catch (ExceptionInInitializerError e) {
            ocurrioError = true;
        } catch (Exception e) {
            Util.escribirErrorAArchivoLog(Util.getStackTrace(e));
            ocurrioError = true;
        } finally {
            if (!ocurrioError) {
                DAO.insertarListaBloqueoEntrega(listaBloqueoEntrega);
            }
        }
    }

    public static void sincronizarTablaClaseMaterial() {
        boolean ocurrioError = false;
        List<ClaseMaterial> listaClaseMaterial = new ArrayList<ClaseMaterial>();
        try {
            listaClaseMaterial = RFC.obtenerListaClaseMaterial();
        } catch (NoClassDefFoundError e) {
            Util.escribirErrorAArchivoLog(Util.getStackTrace(e));
            ocurrioError = true;
        } catch (ExceptionInInitializerError e) {
            ocurrioError = true;
        } catch (Exception e) {
            Util.escribirErrorAArchivoLog(Util.getStackTrace(e));
            ocurrioError = true;
        } finally {
            if (!ocurrioError) {
                DAO.insertarListaClaseMaterial(listaClaseMaterial);
            }
        }

    }

//    public static void sincronizarTablaCliente() {
//        boolean ocurrioError = false;
//        List<String> listaIdUsuarios = DAO.obtenerListaIdUsuarios();
//        List<Cliente> listaClienteGeneral = new ArrayList<Cliente>();
//        for (String idUsuario : listaIdUsuarios) {
//            List<Cliente> listaCliente = new ArrayList<Cliente>();
//            try {
//                listaCliente = RFC.obtenerListaCliente(idUsuario, "", "");
//            } catch (Exception e) {
//                Util.escribirErrorAArchivoLog(Util.getStackTrace(e));
//                ocurrioError = true;
//            } finally {
//                if (!ocurrioError) {
//                    listaClienteGeneral.addAll(listaCliente);
//                }
//            }
//        }
//        DAO.insertarListaCliente(listaClienteGeneral);
//    }
    public static void sincronizarTablaCombo() {
        boolean ocurrioError = false;
        List<List> listaCombo = new ArrayList<List>();
        try {
            listaCombo = RFC.obtenerListaCombo();
        } catch (NoClassDefFoundError e) {
            Util.escribirErrorAArchivoLog(Util.getStackTrace(e));
            ocurrioError = true;
        } catch (ExceptionInInitializerError e) {
            ocurrioError = true;
        } catch (Exception e) {
            Util.escribirErrorAArchivoLog(Util.getStackTrace(e));
            ocurrioError = true;
        } finally {
            if (!ocurrioError) {
                DAO.insertarListaCombo(listaCombo);
            }
        }
    }

    public static void sincronizarTablaCondicion1() {
        boolean ocurrioError = false;
        List<Condicion1> listaCondicion1 = new ArrayList<Condicion1>();
        try {
            listaCondicion1 = RFC.obtenerListaCondicion1();
        } catch (NoClassDefFoundError e) {
            Util.escribirErrorAArchivoLog(Util.getStackTrace(e));
            ocurrioError = true;
        } catch (ExceptionInInitializerError e) {
            ocurrioError = true;
        } catch (Exception e) {
            Util.escribirErrorAArchivoLog(Util.getStackTrace(e));
            ocurrioError = true;
        } finally {
            if (!ocurrioError) {
                DAO.insertarListaCondicion1(listaCondicion1);
            }
        }
    }

    public static void sincronizarTablaCondicion2() {
        boolean ocurrioError = false;
        List<Condicion2> listaCondicion2 = new ArrayList<Condicion2>();
        try {
            listaCondicion2 = RFC.obtenerListaCondicion2();
        } catch (NoClassDefFoundError e) {
            Util.escribirErrorAArchivoLog(Util.getStackTrace(e));
            ocurrioError = true;
        } catch (ExceptionInInitializerError e) {
            ocurrioError = true;
        } catch (Exception e) {
            Util.escribirErrorAArchivoLog(Util.getStackTrace(e));
            ocurrioError = true;
        } finally {
            if (!ocurrioError) {
                DAO.insertarListaCondicion2(listaCondicion2);
            }
        }
    }

    public static void sincronizarTablaCondicionPago() {
        boolean ocurrioError = false;
        List<CondicionPago> listaCondicionPago = new ArrayList<CondicionPago>();
        try {
            listaCondicionPago = RFC.obtenerListaCondicionPago();
        } catch (NoClassDefFoundError e) {
            Util.escribirErrorAArchivoLog(Util.getStackTrace(e));
            ocurrioError = true;
        } catch (ExceptionInInitializerError e) {
            ocurrioError = true;
        } catch (Exception e) {
            Util.escribirErrorAArchivoLog(Util.getStackTrace(e));
            ocurrioError = true;
        } finally {
            if (!ocurrioError) {
                DAO.insertarListaCondicionPago(listaCondicionPago);
            }
        }
    }

    public static void sincronizarTablaCondicionPagoDetalle() {
        boolean ocurrioError = false;
        List<CondicionPagoDetalle> listaCondicionPagoDetalle = new ArrayList<CondicionPagoDetalle>();
        try {
            listaCondicionPagoDetalle = RFC.obtenerListaCondicionPagoDetalle();
        } catch (NoClassDefFoundError e) {
            Util.escribirErrorAArchivoLog(Util.getStackTrace(e));
            ocurrioError = true;
        } catch (ExceptionInInitializerError e) {
            ocurrioError = true;
        } catch (Exception e) {
            Util.escribirErrorAArchivoLog(Util.getStackTrace(e));
            ocurrioError = true;
        } finally {
            if (!ocurrioError) {
                DAO.insertarListaCondicionPagoDetalle(listaCondicionPagoDetalle);
            }
        }
    }

//    public static void sincronizarTablaDestinatario() {
//        boolean ocurrioError = false;
//        List<String> listaIdUsuarios = DAO.obtenerListaIdUsuarios();
//        List<Destinatario> listaDestinatarioGeneral = new ArrayList<Destinatario>();
//        for (String idUsuario : listaIdUsuarios) {
//            List<Destinatario> listaDestinatario = new ArrayList<Destinatario>();
//            try {
//                listaDestinatario = RFC.obtenerListaDestinatario(idUsuario);
//            } catch (Exception e) {
//                Util.escribirErrorAArchivoLog(Util.getStackTrace(e));
//                ocurrioError = true;
//            } finally {
//                if (!ocurrioError) {
//                    listaDestinatarioGeneral.addAll(listaDestinatario);
//                }
//            }
//        }
//        DAO.insertarListaDestinatario(listaDestinatarioGeneral);
//    }
    public static void sincronizarTablaDispositivo() {
        boolean ocurrioError = false;
        List<Dispositivo> listaDispositivo = new ArrayList<Dispositivo>();
        try {
            listaDispositivo = RFC.obtenerListaDispositivo();
        } catch (NoClassDefFoundError e) {
            Util.escribirErrorAArchivoLog(Util.getStackTrace(e));
            ocurrioError = true;
        } catch (ExceptionInInitializerError e) {
            ocurrioError = true;
        } catch (Exception e) {
            Util.escribirErrorAArchivoLog(Util.getStackTrace(e));
            ocurrioError = true;
        } finally {
            if (!ocurrioError) {
                DAO.insertarListaDispositivo(listaDispositivo);
            }
        }
    }

//    public static void sincronizarTablaEmpleado() {
//        boolean ocurrioError = false;
//        List<Empleado> listaEmpleadoGeneral = new ArrayList<Empleado>();
//        List<String> listaIdUsuarios = DAO.obtenerListaIdUsuarios();
//        for (String idUsuario : listaIdUsuarios) {
//            List<Empleado> listaEmpleado = new ArrayList<Empleado>();
//            try {
//                listaEmpleado = RFC.obtenerListaEmpleado(idUsuario);
//            } catch (Exception e) {
//                Util.escribirErrorAArchivoLog(Util.getStackTrace(e));
//                ocurrioError = true;
//            } finally {
//                if (!ocurrioError) {
//                    listaEmpleadoGeneral.addAll(listaEmpleado);
//                }
//            }
//        }
//        DAO.insertarListaEmpleado(listaEmpleadoGeneral);
//    }
//    public static void sincronizarTablaEmpleadoCliente() {
//        boolean ocurrioError = false;
//        List<String> listaIdUsuarios = DAO.obtenerListaIdUsuarios();
//        List<EmpleadoCliente> listaEmpleadoClienteGeneral = new ArrayList<EmpleadoCliente>();
//        for (String idUsuario : listaIdUsuarios) {
//            List<EmpleadoCliente> listaEmpleadoCliente = new ArrayList<EmpleadoCliente>();
//            try {
//                listaEmpleadoCliente = RFC.obtenerListaEmpleadoCliente(idUsuario);
//            } catch (Exception e) {
//                Util.escribirErrorAArchivoLog(Util.getStackTrace(e));
//                ocurrioError = true;
//            } finally {
//                if (!ocurrioError) {
//                    listaEmpleadoClienteGeneral.addAll(listaEmpleadoCliente);
//                }
//            }
//        }
//        DAO.insertarListaEmpleadoCliente(listaEmpleadoClienteGeneral);
//    }
    public static void sincronizarTablaFeriado() {
        boolean ocurrioError = false;
        List<Feriado> listaFeriado = new ArrayList<Feriado>();
        try {
            listaFeriado = RFC.obtenerListaFeriado();
        } catch (NoClassDefFoundError e) {
            Util.escribirErrorAArchivoLog(Util.getStackTrace(e));
            ocurrioError = true;
        } catch (ExceptionInInitializerError e) {
            ocurrioError = true;
        } catch (Exception e) {
            Util.escribirErrorAArchivoLog(Util.getStackTrace(e));
            ocurrioError = true;
        } finally {
            if (!ocurrioError) {
                DAO.insertarListaFeriado(listaFeriado);
            }
        }
    }

    public static void sincronizarTablaJerarquia() {
        boolean ocurrioError = false;
        List<Jerarquia> listaJerarquia = new ArrayList<Jerarquia>();
        try {
            listaJerarquia = RFC.obtenerListaJerarquia();
        } catch (NoClassDefFoundError e) {
            Util.escribirErrorAArchivoLog(Util.getStackTrace(e));
            ocurrioError = true;
        } catch (ExceptionInInitializerError e) {
            ocurrioError = true;
        } catch (Exception e) {
            Util.escribirErrorAArchivoLog(Util.getStackTrace(e));
            ocurrioError = true;
        } finally {
            if (!ocurrioError) {
                DAO.insertarListaJerarquia(listaJerarquia);
            }
        }
    }

    public static void sincronizarTablaMaterial() {
        boolean ocurrioError = false;
        List<Material> listaMaterial = new ArrayList<Material>();
        try {
            listaMaterial = RFC.obtenerListaMaterial("");
        } catch (NoClassDefFoundError e) {
            Util.escribirErrorAArchivoLog(Util.getStackTrace(e));
            ocurrioError = true;
        } catch (ExceptionInInitializerError e) {
            ocurrioError = true;
        } catch (Exception e) {
            Util.escribirErrorAArchivoLog(Util.getStackTrace(e));
            ocurrioError = true;
        } finally {
            if (!ocurrioError) {
                DAO.insertarListaMaterial(listaMaterial);
            }
        }
    }

    public static void sincronizarTablaMaterialStock() {
        boolean ocurrioError = false;
        List<MaterialStock> listaMaterialStock = new ArrayList<MaterialStock>();
        try {
            listaMaterialStock = RFC.obtenerListaMaterialStock();
        } catch (NoClassDefFoundError e) {
            Util.escribirErrorAArchivoLog(Util.getStackTrace(e));
            ocurrioError = true;
        } catch (ExceptionInInitializerError e) {
            ocurrioError = true;
        } catch (Exception e) {
            Util.escribirErrorAArchivoLog(Util.getStackTrace(e));
            ocurrioError = true;
        } finally {
            if (!ocurrioError) {
                DAO.insertarListaMaterialStock(listaMaterialStock);
            }
        }
    }

    public static void sincronizarTablaRol() {
        boolean ocurrioError = false;
        List<Rol> listaRol = new ArrayList<Rol>();
        try {
            listaRol = RFC.obtenerListaRol();
        } catch (NoClassDefFoundError e) {
            Util.escribirErrorAArchivoLog(Util.getStackTrace(e));
            ocurrioError = true;
        } catch (ExceptionInInitializerError e) {
            ocurrioError = true;
        } catch (Exception e) {
            Util.escribirErrorAArchivoLog(Util.getStackTrace(e));
            ocurrioError = true;
        } finally {
            if (!ocurrioError) {
                DAO.insertarListaRol(listaRol);
            }
        }
    }

    public static void sincronizarTablaTipologia() {
        boolean ocurrioError = false;
        List<Tipologia> listaTipologia = new ArrayList<Tipologia>();
        try {
            listaTipologia = RFC.obtenerListaTipologia();
        } catch (NoClassDefFoundError e) {
            Util.escribirErrorAArchivoLog(Util.getStackTrace(e));
            ocurrioError = true;
        } catch (ExceptionInInitializerError e) {
            ocurrioError = true;
        } catch (Exception e) {
            Util.escribirErrorAArchivoLog(Util.getStackTrace(e));
            ocurrioError = true;
        } finally {
            if (!ocurrioError) {
                DAO.insertarListaTipologia(listaTipologia);
            }
        }
    }

    public static void sincronizarTablaUsuario() {
        boolean ocurrioError = false;
        List<Usuario> listaUsuario = new ArrayList<Usuario>();
        try {
            listaUsuario = RFC.obtenerListaUsuario("");
        } catch (NoClassDefFoundError e) {
            Util.escribirErrorAArchivoLog(Util.getStackTrace(e));
            ocurrioError = true;
        } catch (ExceptionInInitializerError e) {
            ocurrioError = true;
        } catch (Exception e) {
            Util.escribirErrorAArchivoLog(Util.getStackTrace(e));
            ocurrioError = true;
        } finally {
            if (!ocurrioError) {
                DAO.insertarListaUsuario(listaUsuario);
            }
        }
    }

    public static void sincronizarTablaUsuarioRol() {
        boolean ocurrioError = false;
        List<UsuarioRol> listaUsuarioRol = new ArrayList<UsuarioRol>();
        try {
            listaUsuarioRol = RFC.obtenerListaUsuarioRol();
        } catch (NoClassDefFoundError e) {
            Util.escribirErrorAArchivoLog(Util.getStackTrace(e));
            ocurrioError = true;
        } catch (ExceptionInInitializerError e) {
            ocurrioError = true;
        } catch (Exception e) {
            Util.escribirErrorAArchivoLog(Util.getStackTrace(e));
            ocurrioError = true;
        } finally {
            if (!ocurrioError) {
                DAO.insertarListaUsuarioRol(listaUsuarioRol);
            }
        }
    }

    public static void sincronizarTablaVista() {
        boolean ocurrioError = false;
        List<Vista> listaVista = new ArrayList<Vista>();
        try {
            listaVista = RFC.obtenerListaVista();
        } catch (NoClassDefFoundError e) {
            Util.escribirErrorAArchivoLog(Util.getStackTrace(e));
            ocurrioError = true;
        } catch (ExceptionInInitializerError e) {
            ocurrioError = true;
        } catch (Exception e) {
            Util.escribirErrorAArchivoLog(Util.getStackTrace(e));
            ocurrioError = true;
        } finally {
            if (!ocurrioError) {
                DAO.insertarListaVista(listaVista);
            }
        }
    }

    public static void sincronizarTablaVistaRol() {
        boolean ocurrioError = false;
        List<VistaRol> listaVistaRol = new ArrayList<VistaRol>();
        try {
            listaVistaRol = RFC.obtenerListaVistaRol();
        } catch (NoClassDefFoundError e) {
            Util.escribirErrorAArchivoLog(Util.getStackTrace(e));
            ocurrioError = true;
        } catch (ExceptionInInitializerError e) {
            ocurrioError = true;
        } catch (Exception e) {
            Util.escribirErrorAArchivoLog(Util.getStackTrace(e));
            ocurrioError = true;
        } finally {
            if (!ocurrioError) {
                DAO.insertarListaVistaRol(listaVistaRol);
            }
        }
    }

    public static void sincronizarTablaConsultaDinamica() {
        boolean ocurrioError = false;
        List<List<Material>> materiales = new ArrayList<List<Material>>();
        try {
            materiales = RFC.obtenerListaMaterialConsultaDinamica();
        } catch (NoClassDefFoundError e) {
            Util.escribirErrorAArchivoLog(Util.getStackTrace(e));
            ocurrioError = true;
        } catch (ExceptionInInitializerError e) {
            ocurrioError = true;
        } catch (Exception e) {
            Util.escribirErrorAArchivoLog(Util.getStackTrace(e));
            ocurrioError = true;
        } finally {
            if (!ocurrioError) {
                DAO.insertarListaMaterialConsultaDinamica(materiales);
            }
        }
    }
    
    public static void sincronizarTablaFormaPagoCobranza() {
        boolean ocurrioError = false;
        List<FormaPago> listaFormaPagoCobranza = new ArrayList<FormaPago>();
        try {
            listaFormaPagoCobranza = RFC.obtenerListaFormaPago("01");
        } catch (NoClassDefFoundError e) {
            Util.escribirErrorAArchivoLog(Util.getStackTrace(e));
            ocurrioError = true;
        } catch (ExceptionInInitializerError e) {
            ocurrioError = true;
        } catch (Exception e) {
            Util.escribirErrorAArchivoLog(Util.getStackTrace(e));
            ocurrioError = true;
        } finally {
            if (!ocurrioError) {
                DAO.insertarListaFormaPagoCobranza(listaFormaPagoCobranza);
            }
        }
    }
	
    public static void sincronizarTablaFormaPagoAnticipo() {
        boolean ocurrioError = false;
        List<FormaPago> listaFormaPagoAnticipo = new ArrayList<FormaPago>();
        try {
            listaFormaPagoAnticipo = RFC.obtenerListaFormaPago("02");
        } catch (NoClassDefFoundError e) {
            Util.escribirErrorAArchivoLog(Util.getStackTrace(e));
            ocurrioError = true;
        } catch (ExceptionInInitializerError e) {
            ocurrioError = true;
        } catch (Exception e) {
            Util.escribirErrorAArchivoLog(Util.getStackTrace(e));
            ocurrioError = true;
        } finally {
            if (!ocurrioError) {
                DAO.insertarListaFormaPagoAnticipo(listaFormaPagoAnticipo);
            }
        }
    }
	
    public static void sincronizarTablaBancoPromesa() {
        boolean ocurrioError = false;
        List<BancoPromesa> listaBancoPromesa = new ArrayList<BancoPromesa>();
        try {
            listaBancoPromesa = RFC.obtenerListaBancoPromesa();
        } catch (NoClassDefFoundError e) {
            Util.escribirErrorAArchivoLog(Util.getStackTrace(e));
            ocurrioError = true;
        } catch (ExceptionInInitializerError e) {
            ocurrioError = true;
        } catch (Exception e) {
            Util.escribirErrorAArchivoLog(Util.getStackTrace(e));
            ocurrioError = true;
        } finally {
            if (!ocurrioError) {
                DAO.insertarListaBancoPromesa(listaBancoPromesa);
            }
        }
    }
    
}
